﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Data;
using CurriculasEntities;

namespace CurriculasDAO
{

    public class ItinerarioFormativoDAO : IBaseDA<ItinerarioFormativoBE, int>
    {

        public ItinerarioFormativoBE Crear(ItinerarioFormativoBE entidad)
        {
            using (EFContext db = new EFContext(Utility.ObtenerCadena()))
            {
                db.Itinerarios.Add(entidad);
                db.SaveChanges();
            }
            return entidad;
        }

        public ItinerarioFormativoBE Obtener(int codPlan, int codCurso)
        {
            using (EFContext db = new EFContext(Utility.ObtenerCadena()))
            {
                return db.Itinerarios.Find(codPlan, codCurso);
            }
        }

        public ItinerarioFormativoBE Obtener(int id)
        {
            using (EFContext db = new EFContext(Utility.ObtenerCadena()))
            {
                return db.Itinerarios.Find(id);
            }
        }

        public ItinerarioFormativoBE Modificar(ItinerarioFormativoBE entidad)
        {
            using (EFContext db = new EFContext(Utility.ObtenerCadena()))
            {
                db.Itinerarios.Attach(entidad);
                db.Entry(entidad).State = EntityState.Modified;
                db.SaveChanges();
            }
            return entidad;
        }

        public void Eliminar(ItinerarioFormativoBE entidad)
        {
            using (EFContext db = new EFContext(Utility.ObtenerCadena()))
            {
                db.Itinerarios.Remove(entidad);
                db.SaveChanges();
            }
        }


        public ICollection<ItinerarioFormativoBE> ListarTodos()
        {
            using (EFContext db = new EFContext(Utility.ObtenerCadena()))
            {
                return db.Itinerarios.ToList();
            }
        }

        public ICollection<ItinerarioFormativoBE> ListarTodos(Expression<Func<ItinerarioFormativoBE, bool>> where)
        {
            using (EFContext db = new EFContext(Utility.ObtenerCadena()))
            {
                return db.Itinerarios.Where(where).ToList();
            }
        }

        public ICollection<ItinerarioFormativoBE> EliminarPorPlan(int idPlan)
        {
            string _sentenciaSql = "USP_GC_ELIMINARITINERARIOS " + idPlan;

            using (EFContext db = new EFContext(Utility.ObtenerCadena()))
            {
                return db.Database.SqlQuery<ItinerarioFormativoBE>(_sentenciaSql).ToList(); ;
            }
        }

    }
}
